﻿/**
 * \file Eii.cs
 * \brief represente la civilisation eii
 * */
namespace Implementation
{
	using interfaces;
	using System;
	using System.Collections.Generic;
	using System.Linq;
	using System.Text;
    [SerializableAttribute()]
	public class EII : CivilisationImpl, Civilisation
	{
		private Caserne caserne
		{
			get;
			set;
		}

		public EII() : base()
		{
            caserne = new CaserneEii();
		}

		public virtual Caserne getCaserne()
		{
			return caserne;
		}

        public override Unite creerDirecteur(int x, int y)
        {
            if (!aDirecteur())
            {
                Directeur d = caserne.creerDirecteur(x, y);
                addUnite(d);
                d.setJoueur(j);
                if (j.getJeu().getCarte() != null)
                    j.getJeu().getCarte().rajoutUnitPos(d.getX(), d.getY(), d);
                return d;
            }
            return null;
        }

        /**
         * \fn verifDirecteur()
         * \brief vérifie que le joueur n'a pas déjà un directeur
         * \return bool
         */
        public virtual bool verifDirecteur()
        {
            bool verif = false;
            List<Unite> list = j.getCivilisation().getUnites();
            while (!list.Any())
            {
                Unite u = list.First();
                list.Remove(u);
                if (u.getAtt() == 0 && u.getDef() == 2)
                    break;
                else
                    verif = true;
            }
            return verif;
        }

        public override Unite creerEtudiant(int x, int y)
        {
            Etudiant d = caserne.creerEtudiant(x, y);
            addUnite(d);
            d.setJoueur(j);
            if (j.getJeu().getCarte() != null)
                j.getJeu().getCarte().rajoutUnitPos(d.getX(), d.getY(), d);
            return d;
        }

        public override Unite creerEnseignant(int x, int y)
        {
            Enseignant d = caserne.creerEnseignant(x, y);
            addUnite(d);
            d.setJoueur(j);
            if (j.getJeu().getCarte() != null)
                j.getJeu().getCarte().rajoutUnitPos(d.getX(), d.getY(), d);
            return d;
        }

	}
}

